package leetCode;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;

/**
 * @PackageName: leetCode
 * @ClassName: LeetCode2104
 * <p>
 * 给你一个整数数组 nums 。nums 中，子数组的 范围 是子数组中最大元素和最小元素的差值。
 * 返回 nums 中 所有 子数组范围的 和 。
 * 子数组是数组中一个连续 非空 的元素序列。
 * 输入：nums = [1,2,3]
 * 输出：4
 * 输入：nums = [4,-2,-3,4,1]
 * 输出：59
 */
public class LeetCode2104 {
    public static void main(String[] args) {
        int[] nums = {1, 2, 3};
        int[] nums1 = {4, -2, -3, 4, 1};
        long result = subArrayRanges(nums1);
        System.out.println(result);
    }

    public static long subArrayRanges(int[] nums) {
        long result = 0;
        for (int i = 0; i < nums.length - 1; i++) {
            List<Integer> listI = new ArrayList<>();
            listI.add(nums[i]);
            for (int j = i + 1; j < nums.length; j++) {
                listI.add(nums[j]);
                listI.sort(Comparator.comparing(Integer::intValue));
                result += (listI.get(listI.size() - 1) - listI.get(0));
            }
        }
        return result;
    }
}
